﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace proFIT_WPF
{
    /// <summary>
    /// Interaction logic for MenadzerWin.xaml
    /// </summary>
    public partial class MenadzerWin : Window
    {
        radnaVerzija.DAL dalInst;
        List<radnaVerzija.Uposlenik> _lista;
        List<radnaVerzija.SportskoDrustvo> _listaSD;
        public MenadzerWin()
        {
            InitializeComponent();
            try
            {
                dalInst = radnaVerzija.DAL.Instanca;
                dalInst.kreirajKonekciju("localhost", "mydb", "root", "");
                radnaVerzija.DAL.UposlenikDAO tmp = dalInst.getDAO.getUposlenikDAO();
                _lista = tmp.getALL();
                //uposleniciPromjenaLSB.ItemsSource = _lista;
                uposleniciCMB.ItemsSource = _lista;
                radnaVerzija.DAL.SportskoDrustvoDAO tmpSD = dalInst.getDAO.getSportskoDrustvoDAO();
                _listaSD = tmpSD.getALL();
                sdrustvaCMB.ItemsSource = _listaSD;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            loadCMB();
            datumZaposlenjaDP.DisplayDate = DateTime.Now;

        }

        private void loadCMB()
        {
            List<string> _SS = new List<string>();
            _SS.Add("VSS");
            _SS.Add("VS");
            _SS.Add("SSS");
            strucnaSpremaCMB.ItemsSource = _SS;
            strucnaSpremaCMB.SelectedIndex = 0;

            List<radnaVerzija.TipUposlenika> _TU = new List<radnaVerzija.TipUposlenika>();
            _TU.Add(radnaVerzija.TipUposlenika.Menadzer);
            _TU.Add(radnaVerzija.TipUposlenika.Recepcionar);
            _TU.Add(radnaVerzija.TipUposlenika.Nadzornik);
            _TU.Add(radnaVerzija.TipUposlenika.RadnikNaIznajmljivanjuOpreme);
            _TU.Add(radnaVerzija.TipUposlenika.Spasilac);
            _TU.Add(radnaVerzija.TipUposlenika.Obezbjedjenje);
            _TU.Add(radnaVerzija.TipUposlenika.Higijena);
            _TU.Add(radnaVerzija.TipUposlenika.Servis);
            _TU.Add(radnaVerzija.TipUposlenika.Parametri);
            _TU.Add(radnaVerzija.TipUposlenika.Trener);
            tipUposlenikaCMB.ItemsSource = _TU;
            tipUposlenikaCMB.SelectedIndex = 0;

            List<int> _BC = new List<int>();
            for (int i = 1; i <= 100; i++)
			{
			    _BC.Add(i);
			}
            brojClanovaCMB.ItemsSource = _BC;


        }

        private void sadrzajTC_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        private void dodajUposlenikaBT_Click(object sender, RoutedEventArgs e)
        {
            float procTMP = (float)((procenatPlateTB.Text[0] - '0') + (procenatPlateTB.Text[2] - '0') * 0.1);
            radnaVerzija.Uposlenik zaSpasiti = new radnaVerzija.Uposlenik(imeTB.Text, prezimeTB.Text, jmbgTB.Text, datumRodjenjaDP.DisplayDate, adresaTB.Text, brojTelefonaTB.Text, sifraTB.Text, usernameTB.Text, procTMP, strucnaSpremaCMB.SelectedValue.ToString(), datumZaposlenjaDP.DisplayDate, tipUposlenikaCMB.SelectedIndex + 2);
            radnaVerzija.DAL.UposlenikDAO uposlenikDaoTMP = dalInst.getDAO.getUposlenikDAO();
            radnaVerzija.Uposlenik provjera = null;
            provjera = uposlenikDaoTMP.getByUP(zaSpasiti.Username, zaSpasiti.Sifra);
            if (null == provjera)
            {
                zaSpasiti.IdOsobe = (int)uposlenikDaoTMP.create(zaSpasiti);
                refreshUposlenici();
                MessageBox.Show("Uspjesno ste dodali uposlenika!");
            }
            else
            {
                MessageBox.Show("Taj uposlenik vec postoji!");
            }
        }

        private void refreshUposlenici()
        {
            radnaVerzija.DAL.UposlenikDAO tmp = dalInst.getDAO.getUposlenikDAO();
            _lista = tmp.getALL();
            //uposleniciPromjenaLSB.ItemsSource = _lista;
            uposleniciCMB.ItemsSource = _lista;
        }

        private void promijeniUposlenikaBT_Click(object sender, RoutedEventArgs e)
        {
            
            
            float procTMP = (float)((procenatPlateTB.Text[0] - '0') + (procenatPlateTB.Text[2] - '0') * 0.1);
            radnaVerzija.Uposlenik zaSpasiti = new radnaVerzija.Uposlenik(imeTB.Text, prezimeTB.Text, jmbgTB.Text, datumRodjenjaDP.DisplayDate, adresaTB.Text, brojTelefonaTB.Text, sifraTB.Text, usernameTB.Text, procTMP, strucnaSpremaCMB.SelectedValue.ToString(), datumZaposlenjaDP.DisplayDate, tipUposlenikaCMB.SelectedIndex + 2);
            zaSpasiti.IdOsobe = (uposleniciCMB.SelectedItem as radnaVerzija.Uposlenik).IdOsobe;
            radnaVerzija.DAL.UposlenikDAO uposlenikDaoTMP = dalInst.getDAO.getUposlenikDAO();
            radnaVerzija.Uposlenik provjera = null;
            provjera = uposlenikDaoTMP.getByUP(zaSpasiti.Username, zaSpasiti.Sifra);
            if (null == provjera)
            {
                MessageBox.Show("Taj uposlenik ne postoji!");
            }
            else
            {
                uposlenikDaoTMP.update(zaSpasiti);
                refreshUposlenici();
                MessageBox.Show("Uspjesno ste promijenili uposlenika!");
            }
        }

        /*private void uposleniciPromjenaLSB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            radnaVerzija.Uposlenik asd = uposleniciPromjenaLSB.SelectedItem as radnaVerzija.Uposlenik;
            if (asd != null)
            {
                imeTB.Text = asd.Ime;
                prezimeTB.Text = asd.Prezime;
                jmbgTB.Text = asd.JMBG1;
                datumRodjenjaDP.DisplayDate = asd.DatumRodjenja;
                adresaTB.Text = asd.AdresaStanovanja;
                brojTelefonaTB.Text = asd.BrojTelefona;
                usernameTB.Text = asd.Username;
                sifraTB.Text = asd.Sifra;
                procenatPlateTB.Text = ((int)asd.ProcenatPlate).ToString() + "." + ((asd.ProcenatPlate - (int)asd.ProcenatPlate) * 10).ToString();
                string a = asd.StrucnaSprema;
                if (a == "VSS") strucnaSpremaCMB.SelectedIndex = 0;
                else if (a == "VS") strucnaSpremaCMB.SelectedIndex = 1;
                else strucnaSpremaCMB.SelectedIndex = 2;
                datumRodjenjaDP.DisplayDate = asd.DatumZaposlenja;
                tipUposlenikaCMB.SelectedIndex = asd.Tip - 1;
            }
        }*/

        private void brisiUposlenikaBT_Click(object sender, RoutedEventArgs e)
        {
            radnaVerzija.Uposlenik asd = uposleniciCMB.SelectedItem as radnaVerzija.Uposlenik;
            radnaVerzija.DAL.UposlenikDAO uposlenikDaoTmp = dalInst.getDAO.getUposlenikDAO();
            uposlenikDaoTmp.delete(asd);
            refreshUposlenici();
        }

        private void unosDrustvaBT_Click(object sender, RoutedEventArgs e)
        {
            

            string trenutni = idUgovoraTB.Text;
            int bU = 0;
            int t = 1;
            for (int i = trenutni.Length - 1; i >= 0; i--)
            {
                bU += (int)(trenutni[i] - '0') * t;
                t *= 10;
            }


            
            radnaVerzija.DAL.SportskoDrustvoDAO SdDaoTMP = dalInst.getDAO.getSportskoDrustvoDAO();
            radnaVerzija.SportskoDrustvo provjera = null;
            provjera = SdDaoTMP.getByContractID(bU);
            if (null == provjera)
            {
                string bu1 = jmbgOsobeTB.Text;
                radnaVerzija.DAL.OsobaDAO osobaDaoTMP = dalInst.getDAO.getOsobaDAO();
                radnaVerzija.Osoba zaSpasiti = new radnaVerzija.Osoba();
                zaSpasiti = osobaDaoTMP.getByJMBG(bu1);
                if (null == zaSpasiti)
                {
                    zaSpasiti = new radnaVerzija.Osoba(imeOsobeTB.Text, prezimeOsobeTB.Text, jmbgOsobeTB.Text, datumRodjenjaOsobeDP.DisplayDate, adresaOsobeTB.Text, brojTelefonaOsobeTB.Text);
                    zaSpasiti.IdOsobe = (int)osobaDaoTMP.create(zaSpasiti);
                }
                radnaVerzija.SportskoDrustvo zaSpasitiSD = new radnaVerzija.SportskoDrustvo(imeDrustvaTB.Text, bU, brojClanovaCMB.SelectedIndex + 1, zaSpasiti.IdOsobe);
                zaSpasitiSD.IdSD = (int)SdDaoTMP.create(zaSpasitiSD);
                refreshDrustva();
                MessageBox.Show("Uspjesno ste dodali drustvo!");
            }
            else
            {
                MessageBox.Show("To drustvo vec postoji!");
            }
        }

        private void refreshDrustva()
        {
            radnaVerzija.DAL.SportskoDrustvoDAO tmpSD = dalInst.getDAO.getSportskoDrustvoDAO();
            _listaSD = tmpSD.getALL();
            sdrustvaCMB.ItemsSource = _listaSD;
        }

        private void promjenaDrustvaBT_Click(object sender, RoutedEventArgs e)
        {
            radnaVerzija.SportskoDrustvo zaSpasiti = sdrustvaCMB.SelectedItem as radnaVerzija.SportskoDrustvo;
            radnaVerzija.Osoba trener;
            if (zaSpasiti != null)
            {
                try
                {
                    radnaVerzija.DAL.OsobaDAO osobaDAOtmp = dalInst.getDAO.getOsobaDAO();
                    trener = osobaDAOtmp.getByID(zaSpasiti.Trener);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                zaSpasiti.ImeDrustva = imeDrustvaTB.Text;
                string trenutni = idUgovoraTB.Text;
                int bU = 0;
                int t = 1;
                for (int i = trenutni.Length - 1; i >= 0; i--)
                {
                    bU += (int)(trenutni[i] - '0') * t;
                    t *= 10;
                }
                zaSpasiti.IdUgovora = bU;
                zaSpasiti.MaxBrojClanova = brojClanovaCMB.SelectedIndex + 1;

                radnaVerzija.Osoba novaOsoba = new radnaVerzija.Osoba(imeOsobeTB.Text, prezimeOsobeTB.Text, jmbgOsobeTB.Text, datumRodjenjaOsobeDP.DisplayDate, adresaOsobeTB.Text, brojTelefonaOsobeTB.Text);
                novaOsoba.IdOsobe = trener.IdOsobe;

                try
                {
                    radnaVerzija.DAL.OsobaDAO osobaDAOtmp = dalInst.getDAO.getOsobaDAO();
                    radnaVerzija.DAL.SportskoDrustvoDAO sdDAOtmp = dalInst.getDAO.getSportskoDrustvoDAO();
                    osobaDAOtmp.update(novaOsoba);
                    sdDAOtmp.update(zaSpasiti);
                    refreshDrustva();
                    MessageBox.Show("Uspjesno ste promijenili drustvo!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }

        private void brisanjeDrustvaBT_Click(object sender, RoutedEventArgs e)
        {
            radnaVerzija.SportskoDrustvo zaObrisati = sdrustvaCMB.SelectedItem as radnaVerzija.SportskoDrustvo;
            if (zaObrisati != null)
            {
                try
                {
                    radnaVerzija.DAL.SportskoDrustvoDAO sdDAOtmp = dalInst.getDAO.getSportskoDrustvoDAO();
                    sdDAOtmp.delete(zaObrisati);
                    refreshDrustva();
                    MessageBox.Show("Uspjesno ste obrisali drustvo");
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            else { }
            
        }

        /*private void sportskaDrustvaLSB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            radnaVerzija.SportskoDrustvo zaMijenjati = sportskaDrustvaLSB.SelectedItem as radnaVerzija.SportskoDrustvo;
            radnaVerzija.Osoba trener;

            if (zaMijenjati != null)
            {
            try
            {
                radnaVerzija.DAL.OsobaDAO osobaDAOtmp = dalInst.getDAO.getOsobaDAO();
                trener = osobaDAOtmp.getByID(zaMijenjati.Trener);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            
                imeDrustvaTB.Text = zaMijenjati.ImeDrustva;
                idUgovoraTB.Text = zaMijenjati.IdUgovora.ToString();
                brojClanovaCMB.SelectedIndex = zaMijenjati.MaxBrojClanova + 1;
                imeOsobeTB.Text = trener.Ime;
                prezimeOsobeTB.Text = trener.Prezime;
                brojTelefonaOsobeTB.Text = trener.BrojTelefona.ToString();
                jmbgOsobeTB.Text = trener.JMBG1.ToString();
                adresaOsobeTB.Text = trener.AdresaStanovanja;
            }
        }*/

        private void uposleniciCMB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            radnaVerzija.Uposlenik asd = uposleniciCMB.SelectedItem as radnaVerzija.Uposlenik;
            if (asd != null)
            {
                imeTB.Text = asd.Ime;
                prezimeTB.Text = asd.Prezime;
                jmbgTB.Text = asd.JMBG1;
                datumRodjenjaDP.DisplayDate = asd.DatumRodjenja;
                adresaTB.Text = asd.AdresaStanovanja;
                brojTelefonaTB.Text = asd.BrojTelefona;
                usernameTB.Text = asd.Username;
                sifraTB.Text = asd.Sifra;
                procenatPlateTB.Text = ((int)asd.ProcenatPlate).ToString() + "." + ((asd.ProcenatPlate - (int)asd.ProcenatPlate) * 10).ToString();
                string a = asd.StrucnaSprema;
                if (a == "VSS") strucnaSpremaCMB.SelectedIndex = 0;
                else if (a == "VS") strucnaSpremaCMB.SelectedIndex = 1;
                else strucnaSpremaCMB.SelectedIndex = 2;
                datumRodjenjaDP.DisplayDate = asd.DatumZaposlenja;
                tipUposlenikaCMB.SelectedIndex = asd.Tip - 1;
            }
        }

        private void sdrustvaCMB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            radnaVerzija.SportskoDrustvo zaMijenjati = sdrustvaCMB.SelectedItem as radnaVerzija.SportskoDrustvo;
            radnaVerzija.Osoba trener;

            if (zaMijenjati != null)
            {
                try
                {
                    radnaVerzija.DAL.OsobaDAO osobaDAOtmp = dalInst.getDAO.getOsobaDAO();
                    trener = osobaDAOtmp.getByID(zaMijenjati.Trener);
                }
                catch (Exception ex)
                {
                    throw ex;
                }


                imeDrustvaTB.Text = zaMijenjati.ImeDrustva;
                idUgovoraTB.Text = zaMijenjati.IdUgovora.ToString();
                brojClanovaCMB.SelectedIndex = zaMijenjati.MaxBrojClanova + 1;
                imeOsobeTB.Text = trener.Ime;
                prezimeOsobeTB.Text = trener.Prezime;
                brojTelefonaOsobeTB.Text = trener.BrojTelefona.ToString();
                jmbgOsobeTB.Text = trener.JMBG1.ToString();
                adresaOsobeTB.Text = trener.AdresaStanovanja;
            }
        } 
    }
}
